home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Kino.gbg.bg (BG).ifs < prev    next >
Text File  |  2005-03-13  |  10KB  |  330 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Alexander Dimitrov <link>aldi@bulgaria.com</link>
  8. Title=kino.gbg.bg
  9. Description=kino.gbg.bg (BG) import
  10. Site=http://kino.gbg.bg
  11. Language=BG
  12. Version=1.1
  13. Requires=3.5.0
  14. Comments= This script is based on 'IMDB (US) import'| Antoine Potten| Danny Falkov| Kai Blankenhorn
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program KinoGbg;
  23. var
  24.   MovieName: string;
  25.  
  26. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  27. var
  28.   i: Integer;
  29. begin
  30.   result := -1;
  31.   if StartAt < 0 then
  32.     StartAt := 0;
  33.   for i := StartAt to List.Count-1 do
  34.     if Pos(Pattern, List.GetString(i)) <> 0 then
  35.     begin
  36.       result := i;
  37.       Break;
  38.     end;
  39. end;
  40.  
  41. procedure HTMLStript (var Value :string);
  42. var
  43.   S :string;
  44.   Stoped :boolean;
  45.   i :integer;
  46. begin
  47.   Value := StringReplace(Value, '<BR>', #13#10);
  48.   Value := StringReplace(Value, '<br>', #13#10);
  49.   Value := StringReplace(Value, '<P>', #13#10);
  50.   Value := StringReplace(Value, '<p>', #13#10);
  51.   Value := StringReplace(Value, '<p>', #13#10);
  52.   Value := StringReplace(Value, #13#10+' ', #13#10);
  53.   HTMLRemoveTags(Value);
  54.   while (length(Value) > 0) and (copy(Value, 1, 1) <= ' ') do
  55.     delete(Value, 1, 1);
  56.   while (length(Value) > 0) and (copy(Value, length(Value), 1) <= ' ') do
  57.     delete(Value, length(Value), 1);
  58. end;
  59.  
  60. procedure AnalyzePage(Address: string);
  61. var
  62.   Page: TStringList;
  63.   LineNr: Integer;
  64. begin
  65.   Page := TStringList.Create;
  66.   Page.Text := GetPage(Address);
  67.   if pos('<b>╥┌╨╤┼═┼</b>', Page.Text) = 0 then
  68.   begin
  69.     AnalyzeMoviePage(Page,Address);
  70.   end else
  71.   begin
  72.     PickTreeClear;
  73.     LineNr := 0;
  74.     LineNr := FindLine('<td class="black11" width="451">', Page, LineNr);
  75.     if LineNr > -1 then
  76.     begin
  77.       PickTreeAdd('Movies in kino.gbg.bg', '');
  78.       AddMoviesTitles(Page, LineNr);
  79.     end;
  80.     if PickTreeExec(Address) then
  81.       AnalyzePage(Address);
  82.   end;
  83.   Page.Free;
  84. end;
  85.  
  86. function GetPeople (Page: TStringList; x :string) :string;
  87. var
  88.   Line, Value: string;
  89.   LineNr: Integer;
  90.   BeginPos, EndPos: Integer;
  91. begin
  92.   LineNr := FindLine(x, Page, 0);
  93.   Value := '';
  94.   if LineNr > -1 then
  95.   begin
  96.     Line := Page.GetString(LineNr);
  97.     BeginPos := Pos(x, Line);
  98.     Delete(Line, 1, BeginPos + length(x));
  99.     BeginPos := Pos(':', Line);
  100.     EndPos := Pos('<br>', Line);
  101.     if EndPos = 0 then
  102.       EndPos := length(Line);
  103.     Value := copy(Line, BeginPos + 2, EndPos - BeginPos - 2);
  104.     HTMLDecode(Value);
  105.     HTMLRemoveTags(Value);
  106.   end;
  107.   GetPeople:=Value;
  108. end;
  109.  
  110. procedure AnalyzeMoviePage(Page: TStringList; Address: string);
  111. var
  112.   Line, Value, Value2: string;
  113.   LineNr: Integer;
  114.   BeginPos, EndPos: Integer;
  115. begin
  116.   // Tranleted Title & Original Title
  117.   LineNr := FindLine('<td class="black10"', Page, 0);
  118.   Line := Page.GetString(LineNr);
  119.   if LineNr > -1 then
  120.   begin
  121.     BeginPos := pos('<b>', Line);
  122.     if BeginPos > 0 then
  123.       BeginPos := BeginPos + 3;
  124.     EndPos := pos('<span class="black11"', Line);
  125.     if EndPos = 0 then
  126.       EndPos := Length(Line);
  127.     Value := copy(Line, BeginPos, EndPos - BeginPos - 1);
  128.     HTMLDecode(Value);
  129.     if GetField(fieldTranslatedTitle) = '' then
  130.       SetField(fieldTranslatedTitle, AnsiMixedCase(Value, ''));
  131.     BeginPos := pos('(', Line) + 1;
  132.     if BeginPos > 0 then
  133.     begin
  134.       EndPos := Pos('<span class="black11"', Line);
  135.       if EndPos < BeginPos then
  136.         EndPos := Pos(')', Line);
  137.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  138.       HTMLDecode(Value);
  139.       if GetField(fieldTranslatedTitle) = '' then
  140.         SetField(fieldOriginalTitle, AnsiMixedCase(Value, ''));
  141.     end;
  142.   end;
  143.   
  144.   //Category
  145.   LineNr := FindLine('╞αφ≡:', Page, 0);
  146.   if LineNr > -1 then
  147.   begin
  148.     Line := Page.GetString(LineNr);
  149.     BeginPos := pos('</b> ', Line) + 5;
  150.     EndPos := pos('<br>', Line);
  151.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  152.     HTMLDecode(Value);
  153.     SetField(fieldCategory, Value);
  154.   end;
  155.  
  156.   // Year
  157.   LineNr := FindLine('├εΣΦφα:', Page, 0);
  158.   if LineNr > -1 then
  159.   begin
  160.     Line := Page.GetString(LineNr);
  161.     BeginPos := pos('</b> ', Line) + 5;
  162.     EndPos := pos('<br>', Line);
  163.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  164.     HTMLDecode(Value);
  165.     SetField(fieldYear, Value);
  166.   end;
  167.  
  168.   //Country
  169.   LineNr := FindLine('╧≡εΦτΓεΣ±≥Γε:', Page, 0);
  170.   if LineNr > -1 then
  171.   begin
  172.     Line := Page.GetString(LineNr);
  173.     BeginPos := pos('</b>', Line) + 5;
  174.     EndPos := pos('<br>', Line);
  175.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  176.     HTMLDecode(Value);
  177.     SetField(fieldCountry, Value);
  178.   end;
  179.  
  180.   // Length
  181.   LineNr := FindLine('┬≡σ∞σ≥≡ασφσ:', Page, 0);
  182.   if LineNr > -1 then
  183.   begin
  184.     Line := Page.GetString(LineNr);
  185.     BeginPos := pos('</b>', Line) + 5;
  186.     EndPos := pos(' ∞Φφ≤≥Φ', Line);
  187.     if EndPos = 0 then
  188.       EndPos := Length(Line);
  189.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  190.     SetField(fieldLength, Value);
  191.   end;
  192.  
  193.   // URL
  194.   LineNr := FindLine('╬⌠Φ÷Φαδσφ ±αΘ≥', Page, 0);
  195.   if LineNr > -1 then
  196.   begin
  197.     Line := Page.GetString(LineNr);
  198.     BeginPos := pos('href="http://', Line) + 6;
  199.     EndPos := pos('">╬⌠Φ÷Φαδσφ ±αΘ≥', Line);
  200.     if EndPos = 0 then
  201.       EndPos := Length(Line);
  202.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  203.     SetField(fieldURL, Value);
  204.   end
  205.   else
  206.     SetField(fieldURL,Address);
  207.  
  208.   // Actors
  209.   SetField(fieldActors, GetPeople(Page,'└Ω≥ⁿε≡Φ'));
  210.  
  211.   // Director
  212.   SetField(fieldDirector, GetPeople(Page,'╨σµΦ±ⁿε≡'));
  213.  
  214.   // Producer
  215.   SetField(fieldProducer, GetPeople(Page,'╧≡εΣ≤÷σφ≥'));
  216.  
  217.   // Description
  218.   LineNr := FindLine('╤■µσ≥:', Page, 0);
  219.   if LineNr > -1 then
  220.   begin
  221.     Line := Page.GetString(LineNr);
  222.     BeginPos := pos('╤■µσ≥:', Line) + 11;
  223.     EndPos := pos('<br><br><br>', Line);
  224.     while (EndPos = 0) and (pos('</td>', Line)=0) do begin
  225.       LineNr := LineNr + 1;
  226.       Line := Line + ' ' + Page.GetString(LineNr);
  227.       EndPos := pos('<br><br><br>', Line);
  228.     end;
  229.     EndPos := pos('<br><br><br>', Line);
  230.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  231.     HTMLDecode(Value);
  232.     HTMLStript(Value);
  233.     SetField(fieldDescription, Value);
  234.   end;
  235.  
  236.   // Comments
  237.   LineNr := FindLine('<!-- recenzii -->', Page, 0);
  238.   if LineNr > -1 then
  239.   begin
  240.     PickListClear;
  241.     LineNr := FindLine('<td class="black11">', Page, LineNr);
  242.     while LineNr > -1 do begin
  243.       LineNr := LineNr + 1;
  244.       Line := Page.GetString(LineNr);
  245.       EndPos := pos('</td>', Line);
  246.       while (EndPos = 0) and (pos('<br><br><br>',Line)=0) do begin
  247.         LineNr := LineNr + 1;
  248.         Line := Line + ' ' + Page.GetString(LineNr);
  249.         EndPos := pos('</td>', Line);
  250.       end;
  251.       BeginPos := 1;
  252.       EndPos := pos('<br><br><br>', Line);
  253.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  254.       HTMLDecode(Value);
  255.       HTMLStript(Value);
  256.       if StringReplace(StringReplace(Value,#13#10,''), ' ', '') <> '' then
  257.         PickListAdd(Value);
  258.       LineNr := FindLine('<td class="black11">', Page, LineNr);
  259.     end;
  260.     if PickListExec('Select a comment for "' + MovieName + '"', Value) then
  261.       SetField(fieldComments, Value);
  262.   end;
  263.  
  264.   //DisplayResults;
  265. end;
  266.  
  267. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  268. var
  269.   Line: string;
  270.   MovieTitle, MovieAddress: string;
  271.   StartPos: Integer;
  272. begin
  273.   repeat
  274.     LineNr := LineNr + 1;
  275.     Line := Page.GetString(LineNr);
  276.     StartPos := pos('href="index.php?p=archive&filmid', Line);
  277.     if StartPos > 0 then
  278.     begin
  279.       Startpos := Startpos + 6;
  280.       MovieAddress := copy(Line, StartPos, pos('">', Line) - StartPos);
  281.       StartPos := pos('">', Line) + 2;
  282.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  283.       if pos('admin/movies/',Movietitle)=0 then begin
  284.         HTMLDecode(MovieTitle);
  285.         PickTreeAdd(MovieTitle, 'http://kino.gbg.bg/' + MovieAddress);
  286.       end;
  287.     end;
  288.   until pos('<table cellpadding="0" cellspacing="6" border="0">', Line) > 0;
  289. end;
  290.  
  291. begin
  292.   if CheckVersion(3,5,0) then
  293.   begin
  294.     MovieName := GetField(fieldOriginalTitle);
  295.     if MovieName = '' then
  296.       MovieName := GetField(fieldTranslatedTitle);
  297.     if Input('Kino.gbg.bg Import', 'Enter the title of the movie:', MovieName) then
  298.     begin
  299.       AnalyzePage('http://kino.gbg.bg/index.php?p=srch&keyw='+UrlEncode(MovieName)+'&where=movies');
  300.     end;
  301.   end else
  302.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  303. end.
  304.  
  305. os, pos('">', Line) - StartPos);
  306.       StartPos := pos('">', Line) + 2;
  307.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  308.       if pos('admin/movies/',Movietitle)=0 then begin
  309.         HTMLDecode(Movietitle);
  310.         PickTreeAdd(MovieTitle, 'http://kino.gbg.bg/' + MovieAddress);
  311.       end;
  312.     end;
  313.   until pos('<table cellpadding="0" cellspacing="6" border="0">', Line) > 0;
  314. end;
  315.  
  316. begin
  317.   if CheckVersion(3,5,0) then
  318.   begin
  319.     MovieName := GetField(fieldOriginalTitle);
  320.     if MovieName = '' then
  321.       MovieName := GetField(fieldTranslatedTitle);
  322.     if Input('Kino.gbg.bg Import', 'Enter the title of the movie:', MovieName) then
  323.     begin
  324.       AnalyzePage('http://kino.gbg.bg/index.php?p=srch&keyw='+UrlEncode(MovieName)+'&where=movies');
  325.     end;
  326.   end else
  327.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  328. end.
  329.  
  330.